;; MELPA package
(when (>= emacs-major-version 24)
  (require 'package)
  (package-initialize)
  (setq package-archives '(("gpu"    . "http://elpa.emacs-china.org/gnu/")
			   ("melpa"    . "http://elpa.emacs-china.org/melpa/"))))
;; 注意 elpa.emacs-china.org 是 emacs china 在国内搭建的一个 elpa 镜像
;; cl - common lisp extension
(require 'cl)

;; Add packages
;; 定义需要的包列表
(defvar my/packages '(
		      ;; 自动补全
		      company
		      ;; 更好的编辑器
		      hungry-delete
		      swiper
		      counsel
		      smartparens
		      ;; --Major Mode--
		      js2-mode
		      ;; --Minor Mode--
		      nodejs-repl
		      exec-path-from-shell
		      ;; --Themes --
		      monokai-theme
		      solarized-theme
		      ) "Default packages")
(setq package-selected-packages my/packages)

;; 函数返回nil代表有包未装上
(defun my/packages-installed-p ()
  (loop for pkg in my/packages
	when (not (package-installed-p pkg)) do (return nil)
	finally (return t)))

(setq gputls-algorithm-priority "NORMAL:-VERS-TLS1.3")
(setq package-check-signature nil)
(unless (my/packages-installed-p)
  (message "%s" "Refreshing package database...")
  (package-refresh-contents)
  ;; 针对每个包, 如果没装就装上
  (dolist (pkg my/packages)
    (when (not (package-installed-p pkg))
      (package-install pkg))))

;; Find executable path on os
(when (memq window-system '(mac ns))
  (exec-path-from-shell-initialize))

;;1-th day
;; 关闭工具栏, tool-bar-mode 即为一个 Minor Mode
(tool-bar-mode -1)

;; 关闭文件滑动控件
(scroll-bar-mode -1)

;; 显示行号
(global-linum-mode 1)

;; 更改光标的样式 (不能生效, 解决方案见第二集)
(setq-default cursor-type 'bar)

;; 关闭启动帮助动画
(setq inhibit-splash-screen 1)

;; 更改显示字体大小 10pt
(set-face-attribute 'default nil :height 100)

;; 快速打开配置文件
(defun open-init-file()
  (interactive)
  (find-file "~/.emacs.d/init.el"))
;; 这一行代码将函数 open-init-file 绑定到 <f2> 键上
(global-set-key (kbd "<f2>") 'open-init-file)

;; 2th day
;;禁止emacs自动生成备份文件
(setq make-backup-files nil)

;;加入最近打开过文件的选项
(require 'recentf)
(recentf-mode 1)
(setq recentf-max-menu-item 10)
;; 这个快捷键绑定可以用之后的插件 counsel代替
;; (global-set-key (kbd "C-x C-r") 'recentf-open-files)

;; 选中一段文字后, 输入一个字符会替换掉你选中部分的文字
(delete-selection-mode 1)

;; 启用自动括号匹配
(add-hook 'emacs-lisp-mode-hook 'show-paren-mode)
;; 高亮当前行
;;(global-hl-line-mode 1)

;; 安装主题
;;(add-to-list 'my/packages 'monokai-theme)
;;(load-theme 'monokai -1)
